ADCS ESC5 : آسیبپذیری در کنترل دسترسی به اشیاء زیرساخت کلید عمومی
حمله ESC5 یکی از حملات با ریسک بالا علیه زیرساخت سرویسهای گواهینامهی Active Directory Certificate Services (ADCS) محسوب میشود. این نوع حمله با سوءاستفاده از دسترسی ناایمن به کلید خصوصی مرجع صدور گواهینامه (Certificate Authority – CA) انجام میگیرد. در شرایطی که مهاجم بتواند به سطح دسترسی مدیر محلی (Local Administrator) در سرور CA دست یابد، قادر خواهد بود کلید خصوصی آن را استخراج نماید.
در اختیار داشتن کلید خصوصی CA این امکان را به مهاجم میدهد تا گواهینامههای معتبر برای هر حساب کاربری در دامنه صادر کند؛ از جمله حسابهای سطح بالا نظیر Domain Admins. این گواهینامههای جعلی میتوانند برای احراز هویت از طریق پروتکل Kerberos با استفاده از مکانیزم PKINIT به کار گرفته شوند و بدینترتیب مهاجم میتواند بدون نیاز به گذرواژه یا هش، در سراسر شبکه حرکت جانبی (Lateral Movement) انجام دهد.
حمله ESC5 بر ضرورت تأمین امنیت کلید خصوصی CA تأکید دارد؛ زیرا عدم محافظت صحیح از این مؤلفه حیاتی میتواند به بهرهبرداری از این آسیبپذیری شدید منجر شود.
فهرست مطالب
- مروری بر حمله ESC5
- مکانیزم حمله ESC5
- ساختار آسیبپذیر کنترل دسترسی به اشیاء در زیرساخت PKI
- پیشنیازها برای بهرهبرداری
- شناسایی و بهرهبرداری (Enumeration و Exploitation)
- ۱ افزودن یا تأیید دسترسی مدیر محلی (Local Admin) بر روی سرور CA
- ۲ اجرای حمله ESC5 با استفاده از ابزار Certipy
- اقدامات پس از بهرهبرداری (Post-Exploitation)
- ۱ حرکت جانبی و افزایش سطح دسترسی با استفاده از impacket-psexec
- راهکارهای مقابله و کاهش مخاطرات (Mitigation)
مرور کلی بر حمله ESC5
حمله ESC5 یکی از انواع حملات پیشرفته علیه سرویسهای Active Directory Certificate Services (ADCS) به شمار میرود که در آن مهاجم با دستیابی به سطح دسترسی مدیر محلی (Local Administrator) بر روی سرور مرجع صدور گواهینامه (Certificate Authority – CA)، قادر به استخراج کلید خصوصی CA خواهد بود. با در اختیار داشتن این کلید، مهاجم میتواند گواهینامههای جعلی و معتبر برای هر حساب کاربری در دامنه، از جمله حسابهای با سطح دسترسی بالا مانند Domain Admins صادر کند.
این حمله به مهاجم اجازه میدهد تا از طریق پروتکل PKINIT در Kerberos احراز هویت کند و بدون نیاز به گذرواژه یا هش، به دسترسی کامل به دامنه دست یابد.
ویژگی اصلی این حمله، پنهانکاری، قدرت بالا و بهرهبرداری از اعتماد ذاتی اکتیودایرکتوری به کلید امضای مرجع صدور گواهینامه (CA) است. بدین ترتیب، زیرساخت PKI سازمان به نقطهای بحرانی برای نفوذگران تبدیل میشود.
شرایط کلیدی برای موفقیت حمله ESC5:
- دسترسی مدیر محلی (Local Admin) به سرور CA: مهاجم باید دارای دسترسی مدیر محلی روی سرور مرجع صدور گواهینامه باشد تا بتواند کلید خصوصی را استخراج کند.
- محافظت ضعیف از کلید خصوصی CA: در صورتی که کلید خصوصی به درستی ایمنسازی نشده باشد، امکان سرقت آن فراهم خواهد بود.
- عدم ابطال گواهینامه یا دوره اعتبار طولانی: در صورت صدور گواهیهایی با اعتبار طولانی و نبود سازوکار ابطال مؤثر، مهاجم میتواند دسترسی خود را برای مدت طولانی حفظ کند.
- اعتماد اکتیودایرکتوری به گواهینامههای امضاشده توسط CA: AD به صورت پیشفرض به گواهینامههایی که توسط مرجع CA امضا شدهاند، اعتماد دارد؛ از این رو، مهاجم میتواند گواهیهای جعلی و معتبر برای هر حساب کاربری، حتی ادمین دامنه، تولید کند.
مکانیزم حمله ESC5
مکانیزم حمله ESC5 مجموعهای از مراحل هدفمند و فنی را شامل میشود که در آن مهاجم با بهرهگیری از ضعفهای امنیتی در زیرساخت PKI و Active Directory به دسترسی سطح بالا در دامنه دست مییابد. مراحل این حمله به شرح زیر است:
- تسخیر دسترسی مدیر محلی (Local Admin) در سرور CA
مهاجم از طریق حرکت جانبی (Lateral Movement) یا بهرهبرداری از تنظیمات اشتباه در گروههای کاربری، موفق به کسب دسترسی مدیر محلی روی سرور مرجع صدور گواهینامه (CA) میشود. - استخراج گواهینامه و کلید خصوصی مرجع CA
با استفاده از ابزارهایی نظیر Certipy-AD، مهاجم گواهینامه و کلید خصوصی مرجع صدور گواهینامه را استخراج کرده و آنها را در قالب فایل PFX ذخیره میکند. - صدور گواهی جعلی برای کاربر دارای سطح دسترسی بالا
پس از در اختیار گرفتن کلید خصوصی، مهاجم اقدام به صدور یک گواهی جعلی برای یک کاربر با امتیازات بالا (برای مثال: administrator@ignite.local) مینماید. این گواهی از سوی Active Directory معتبر تلقی میشود. - احراز هویت از طریق گواهی جعلی (PKINIT)
مهاجم از گواهی جعلی صادرشده برای احراز هویت از طریق پروتکل Kerberos با مکانیزم PKINIT استفاده میکند، و بدین وسیله بلیت TGT (Ticket Granting Ticket) را برای حساب هدف دریافت میکند. - حرکت جانبی و تسلط بر دامنه
با استفاده از TGT بهدستآمده، مهاجم قادر به حرکت جانبی در شبکه و ارتقاء سطح دسترسی خواهد بود. در بسیاری از موارد، این روند به دسترسی کامل در سطح Domain Admin منجر میشود.
ساختار آسیبپذیر کنترل دسترسی به اشیاء در زیرساخت PKI
موفقیت حمله ESC5 به وجود ضعفها و پیکربندیهای نادرست در ساختار زیرساخت کلید عمومی (PKI) و تعامل آن با Active Directory وابسته است. در ادامه، مؤلفههای کلیدی که این آسیبپذیری را ممکن میسازند تشریح شدهاند:
- سطوح دسترسی روی سرور CA
در صورتی که مهاجم بتواند به سطح دسترسی مدیر محلی (Local Administrator) بر روی سرور CA دست یابد، امکان استخراج کلید خصوصی مرجع صدور گواهینامه برای وی فراهم میشود. - محافظت ناکارآمد از کلید خصوصی
نبود مکانیزمهای حفاظتی مؤثر (نظیر استفاده از HSM، EFS یا مجوزهای محدود دسترسی) بر روی کلید خصوصی CA، زمینه را برای استخراج و سوءاستفاده مهاجم فراهم میکند. - مدل اعتماد در Active Directory
Active Directory بهطور پیشفرض به تمامی گواهینامههایی که توسط CA مورد اعتماد امضا شدهاند، صرفنظر از منشأ یا نحوه صدور آنها، اعتماد میکند—even if they are forged. این اعتماد بدون بررسی منشأ واقعی گواهی، امکان صدور گواهیهای جعلی و سوءاستفاده از آنها را فراهم میسازد. - استفاده از Kerberos با مکانیزم PKINIT
بهرهگیری از پروتکل Kerberos به همراه مکانیزم Public Key Cryptography for Initial Authentication (PKINIT) امکان احراز هویت کاربران را صرفاً با استفاده از گواهینامهها فراهم میسازد. این امر به مهاجم اجازه میدهد تا بدون نیاز به گذرواژه یا هش، بهصورت کاملاً مخفیانه اقدام به جعل هویت کاربران با امتیازات بالا نماید.
نکته: وجود این پیکربندیهای نادرست به یک کاربر با دسترسی Local Admin در سرور CA این امکان را میدهد که بدون رعایت هیچگونه محدودیت اعمالشده توسط Active Directory، هویت هر کاربر در دامنه را جعل کند و به سرعت به منابع حیاتی سازمان دست یابد.
پیشنیازها
برای پیادهسازی و بهرهبرداری از حمله ESC5، فراهم بودن شرایط زیر الزامی است:
- ویندوز سرور ۲۰۱۹ بهعنوان Active Directory، با قابلیت پشتیبانی از PKINIT
- راهاندازی کامل سرویسهای Active Directory Certificate Services (ADCS) و صدور گواهینامه توسط مرجع CA
- سیستم Kali Linux بههمراه مجموعه ابزارهای تست نفوذ
- ابزارهای مورد نیاز:
- Certipy-AD برای استخراج و جعل گواهینامهها
- Impacket-psexec برای اجرای دستورات از راه دور و حرکت جانبی
اگر در حال مطالعه این مطلب هستید، فرض بر این است که با مسیرهای حمله به ADCS و راهاندازی محیط آزمایشگاهی آشنایی کافی دارید. احتمالاً شما توانایی انجام موارد زیر را دارید:
- شناسایی قالبهای گواهی (Certificate Templates) با استفاده از ابزارهایی مانند Certipy یا Metasploit
- درک اهمیت تنظیمات قالبها از جمله ENROLLEE_SUPPLIES_SUBJECT و Client Authentication
- مسیریابی در ساختار سلسلهمراتبی مرجعهای صدور گواهی (CA) و قالبها در Active Directory
در این مقاله، به جای پرداختن مجدد به نحوه راهاندازی محیط آزمایشگاهی، تمرکز بر بهرهبرداری عملی از یک پیکربندی نادرست با تأثیر بالا در حمله ESC5 خواهد بود. برخلاف مسیرهای حملهای مانند ESC4 که بر سوءاستفاده از مجوزهای قالب گواهی تمرکز دارند، ESC5 ضعف در حفاظت از کلید خصوصی CA را هدف قرار میدهد.
شناسایی و بهرهبرداری
افزودن یا تأیید دسترسی مدیر محلی (Local Admin) بر روی سرور CA
اولین گام در مسیر بهرهبرداری از حمله ESC5، حصول اطمینان از این موضوع است که مهاجم دارای دسترسی با سطح مدیر محلی (Local Administrator) روی سرور مرجع صدور گواهینامه (CA) است. این سطح از دسترسی برای استخراج کلید خصوصی CA ضروری است و بدون آن، ادامه مراحل حمله امکانپذیر نخواهد بود.
روشهای متداول دستیابی به این دسترسی:
- حرکت جانبی (Lateral Movement) از طریق ابزارهایی مانند psexec.py از مجموعه Impacket
- بهرهبرداری از تنظیمات نادرست گروههای کاربری (مانند عضویت اشتباهی یک حساب کاربری در گروههای دارای امتیاز بالا مانند Administrators یا Remote Desktop Users در سرور CA)
- استفاده از آسیبپذیریهای شناختهشده در سرویسها یا پیکربندیهای سیستمعامل میزبان CA
دسترسی به کلید خصوصی CA
برای دستیابی به کلید خصوصی مرجع صدور گواهینامه (CA)، برخورداری از سطح دسترسی مدیر محلی (Local Administrator) بر روی سرور CA الزامی است. این سطح از دسترسی به مهاجم اجازه میدهد با سرویس CA تعامل داشته باشد، از دادههای حساس نسخه پشتیبان تهیه کند، یا به مخازن گواهینامهها (Certificate Stores) دسترسی مستقیم پیدا کند.
یکی از پیکربندیهای نادرست رایج، افزودن کاربران به گروه Administrators بهصورت ناآگاهانه یا نادرست است. این موضوع میتواند مسیر حمله ESC5 را برای مهاجم تسهیل کند.
از دستورات زیر برای بررسی یا افزودن کاربری مانند “raj” استفاده کنید:
net localgroup Administrators "inite\raj" /add net localgroup Administrators
بررسی کنید که آیا کاربر “raj” عضو گروه Administrators است؛ زیرا این موضوع میتواند دسترسی غیرمجاز به سرور CA را فراهم کرده و زمینهساز حمله ESC5 شود.
اجرای حمله ESC5 با استفاده از Certipy
در این مرحله، فرآیند تهیه نسخه پشتیبان از گواهینامه مرجع صدور (CA Certificate) و کلید خصوصی آن را آغاز میکنیم. کلید خصوصی CA نقش حیاتی در امضای دیجیتال گواهینامههای صادرشده دارد. در صورتی که مهاجم به این کلید دست یابد، قادر خواهد بود گواهینامههایی جعلی برای هر کاربر یا ماشین در دامنه ایجاد کند—و از آنجایی که Active Directory به گواهیهای امضاشده توسط CA اعتماد دارد، این گواهیها معتبر تلقی خواهند شد.
برای تهیه نسخه پشتیبان از گواهینامه و کلید خصوصی CA، دستور زیر را اجرا کنید:
certipy-ad ca -backup -u raj@ignite.local -p Password@1 -ca ignite-DC-CA -target 192.168.1.48
این عملیات منجر به ایجاد یک گواهینامه معتبر و امضاشده با نام administrator_forged.pfx میشود که به ما اجازه میدهد هویت کاربر هدف، مانند Domain Admin، را جعل کرده و به منابع دامنه بهصورت غیرمجاز دسترسی پیدا کنیم.
از آنجا که Active Directory از PKINIT پشتیبانی میکند، احراز هویت Kerberos از طریق گواهینامه نیز امکانپذیر است. در نتیجه، با استفاده از گواهی جعلی ایجادشده، میتوانیم بهعنوان کاربر administrator@ignite.local یک بلیت TGT (Ticket Granting Ticket) درخواست کنیم و به منابع دامنه با سطح دسترسی بالا دست یابیم.
برای دستیابی به این هدف، دستور احراز هویت (Auth) زیر را اجرا کنید:
certipy-ad auth -pfx administrator_forged.pfx -dc-ip 192.168.1.48
این دستور هشهای NTLM را در نشست فعلی استخراج میکند و به ما اجازه میدهد بهعنوان کاربر هدف احراز هویت کنیم.
پس از بهرهبرداری (Post Exploitation)
حرکت جانبی و ارتقاء سطح دسترسی با استفاده از impacket-psexec
پس از جعل موفق گواهینامه و دریافت TGT معتبر برای یک حساب کاربری با سطح بالا (مانند Domain Admin)، مهاجم میتواند به مرحله بعدی حمله وارد شود: حرکت جانبی (Lateral Movement) در سراسر شبکه و ارتقاء سطح دسترسی (Privilege Escalation) برای تسلط کامل بر محیط دامنه.
یکی از ابزارهای رایج در این مرحله، impacket-psexec است که امکان اجرای دستورات از راه دور روی سیستمهای تحت ویندوز را از طریق SMB فراهم میسازد.
impacket-psexec ignite.local/administrator@ignite.local -hashes :32196b56ffe6f45e294117b91a83bf38
ما با استفاده از دسترسی مدیر محلی (Local Admin) در سرور مرجع صدور گواهینامه (CA)، موفق به پشتیبانگیری از کلید خصوصی CA شدیم. در ادامه، با بهرهگیری از این کلید، یک گواهینامه جعلی برای حساب کاربری administrator@example.local صادر کردیم، سپس از طریق PKINIT احراز هویت کرده و موفق به دریافت بلیت اولیه Kerberos (TGT) شدیم.
در مرحله بعد، با استفاده از ابزار Impacket، توانستیم یک پوستهی سطح سیستم (SYSTEM shell) روی کنترلر دامنه (Domain Controller) راهاندازی کنیم که نشاندهندهی تسلط کامل بر دامنه و موفقیتآمیز بودن حمله است.
اقدامات مقابلهای
برای کاهش ریسک حمله ESC5 و جلوگیری از سوءاستفاده از زیرساخت صدور گواهینامه در Active Directory، اقدامات زیر توصیه میشود:
- دسترسی به سرور CA (CA Access):
حسابهای کاربری غیرضروری را از گروه Administrators در سرور CA حذف کنید. تنها افرادی با نیاز عملیاتی مشخص باید دسترسی مدیریتی به سرور CA داشته باشند. - امنسازی قالبهای گواهینامه (Template Security):
تنظیمات ناایمن مانند ENROLLEE_SUPPLIES_SUBJECT را غیرفعال کنید و استفاده از Extended Key Usages (EKUs) غیرضروری را محدود نمایید. - ممیزی و پایش (Auditing):
بهصورت منظم از ابزارهایی مانند Certipy و ADCSaudit برای شناسایی پیکربندیهای نادرست و آسیبپذیریهای احتمالی در محیط ADCS استفاده کنید. - مانیتورینگ لاگها (Monitoring):
لاگهای ورود از طریق گواهینامه را بهدقت بررسی کرده و نسبت به فعالیتهای غیرعادی، بهویژه احراز هویت مبتنی بر SAN (Subject Alternative Name)، هشدارهای امنیتی فعال نمایید.